Advances in semiconductor processing and logic design have permitted an increase in the amount of logic that may be present on integrated circuit devices. As a result, computer system configurations have evolved from a single or multiple integrated circuits in a system to multiple hardware threads, multiple cores, multiple devices, and/or complete systems on individual integrated circuits. Additionally, as the density of integrated circuits has grown, the power requirements for computing systems (from embedded systems to servers) have also escalated. Furthermore, software inefficiencies, and its requirements of hardware, have also caused an increase in computing device energy consumption. In fact, some studies indicate that computing devices consume a sizeable percentage of the entire electricity supply for a country, such as the United States of America. As a result, there is a vital need for energy efficiency and conservation associated with integrated circuits. These needs will increase as servers, desktop computers, notebooks, ultrabooks, tablets, mobile phones, processors, embedded systems, etc. become even more prevalent (from inclusion in the typical computer, automobiles, and televisions to bio-technology).
As more consumers adopt portable and mobile devices such as smartphones, tablet computers, mobile computers, portable media players and so forth, there is tremendous growth for network-based content and services. Examples include movie downloads, quick synchronizations, e.g., portable media player music/movie synchronization, cloud-based storage, etc. These usage models are fueled by ubiquitous and faster connectivity as well as increased compute capabilities of mobile devices such as smartphones, tablets and ultrabooks.
One drawback in provision of these services on mobile devices is the power consumption that connectivity and communication of large amounts of media content can consume. The typical datapath for the above-mentioned services and many others is as follows: incoming data to a device is received in a source component of the device, e.g., a network interface controller (NIC), and transferred to a sink component of the device, e.g., a storage device. This datapath involves a host central processing unit (CPU) to handle the data movement from one component of the device to the other component through a system memory. According to typical device architectures and data-paths, the host CPU and system memory are heavily involved in the data control and movement from an input device to an output device, which includes handling multiple copies of the data between source component and system memory, or even between kernel space and user space. This overhead incurs high power consumption and lowers performance.